home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-17 / cfgsys11.zip / CFG.DOC < prev    next >
Text File  |  1992-09-11  |  41KB  |  964 lines

  1.  
  2.                              CFG.SYS Version 1.1
  3.  
  4.                                Mark Treadwell
  5.                              1247 Foursome Lane
  6.                      Virginia Beach, Virginia 23455-6819
  7.                             Voice: (804) 497-3281
  8.                            CompuServe: 73700,3344
  9.                      Internet: 73700.3344@compuserve.com
  10.  
  11.  
  12.                       Copyright (c) 1992 Mark Treadwell
  13.                              All Rights Reserved
  14.  
  15.  
  16.  
  17. CFG.SYS is a system device driver that provides multiple utilities for use
  18. during CONFIG.SYS execution.  The program does not remain resident and
  19. releases all memory on termination.  Suggestions for additions to CFG.SYS
  20. are welcome.  Contact me via CompuServe Mail or in the CompuServe Forum
  21. section corresponding to the library CFG.SYS was downloaded from.
  22.  
  23.  
  24. ───────────────────────────────────────────────────────────────────────────
  25.                                    TO USE
  26. ───────────────────────────────────────────────────────────────────────────
  27.  
  28.  
  29. Syntax      DEVICE=[drive:][path]CFG.SYS CommandName [Options]
  30.  
  31.  
  32. Parameter   [drive:][path]
  33.                   Specifies the location of the CFG.SYS file.
  34.  
  35.             CommandName
  36.                   The list of valid CommandNames is given in the COMMANDS
  37.                   section below.  The CommandNames must be spelled exactly
  38.                   as shown.
  39.  
  40.             [Options]
  41.                   CommandName related options are detailed below.
  42.  
  43.  
  44. Switches    None.
  45.  
  46.  
  47. Example     See the SAMPLE CONFIG.SYS section at the end of this file.
  48.  
  49.  
  50. Help        For help from the DOS command line, "TYPE CFG.SYS" will display
  51.             an abbreviated command summary.
  52.  
  53.  
  54. Notes       Case does not matter in CONFIG.SYS since DOS capitalizes
  55.             everything in the file during its preliminary scan.  This is
  56.             pertinent when using the Echo or EchoPause commands.
  57.  
  58.             CFG.SYS provides numerous error messages to make problems easier
  59.             to diagnose and correct since rebooting multiple times to get
  60.             everything right can be tedious.  See the SAMPLE CONFIG.SYS
  61.             section for examples of program use.
  62.  
  63.             CFG.SYS may be loaded high during execution using the DOS
  64.             Version 5.0 DeviceHigh command or other memory manager such as
  65.             Quarterdeck's QEMM or Qualitas' 386Max/BlueMax, but doing so may
  66.             actually waste memory since stubs of the third party loader
  67.             programs may remain resident.  It is simplest (and safest) to
  68.             execute CFG.SYS via a Device statement.
  69.  
  70.  
  71.                      PC Magazine PATCH Utility Variables
  72.                      ───────────────────────────────────
  73.       [TEXT]      : Echo Carriage Return/Line Feed Insert Character
  74.                   : Echo Lower Case Toggle Character
  75.  
  76.       [NUMBER]    : Tones Low Point Frequency
  77.                   : Tones High Point Frequency
  78.                   : Tones Step Value
  79.                   : Tones Duration
  80.  
  81.  
  82. ───────────────────────────────────────────────────────────────────────────
  83.                                   COMMANDS
  84. ───────────────────────────────────────────────────────────────────────────
  85.  
  86. All command line formats and examples given below should be understood to
  87. begin with "DEVICE=[drive:][path]CFG.SYS " in the CONFIG.SYS file unless
  88. specified otherwise.
  89.  
  90. ══════════════════
  91.  
  92. Beep        Beeps the speaker.
  93.  
  94.             Command line format:
  95.  
  96.                   Beep
  97.  
  98.             Writes an ASCII 7 to the screen to trigger the BIOS beep sound
  99.             routine.
  100.  
  101.             This function was written by the author.
  102.  
  103. ══════════════════
  104.  
  105. Cls         Clears the screen with a choice of foreground and background
  106.             colors.
  107.  
  108.             Command line format:
  109.  
  110.                   Cls [Foreground [on] Background]
  111.  
  112.             The following colors may be used:
  113.  
  114.                   - Black           - Grey
  115.                   - Blue            - Bright Blue
  116.                   - Green           - Bright Green
  117.                   - Cyan            - Bright Cyan
  118.                   - Red             - Bright Red
  119.                   - Magenta         - Bright Magenta
  120.                   - Yellow          - Bright Yellow
  121.                   - White           - Bright White
  122.  
  123.             If any color in the right column is chosen for a background, the
  124.             video display is reprogrammed to show intense background colors
  125.             vice blinking text.  Some programs may subsequently reset this.
  126.  
  127.             If ANSI.SYS is not installed, the screen is cleared using a BIOS
  128.             window scroll.  The screen colors may not remain permanent,
  129.             depending on the behavior of the video adapter.  If ANSI.SYS is
  130.             installed before CFG.SYS is run, CFG.SYS will detect it and use
  131.             ANSI escape sequences to change system colors.
  132.  
  133.             Note that the "Bright ..." colors are scanned on the command
  134.             line with only a single space between the words.  This was done
  135.             to simplify the logic of the parsing routine.  Otherwise,
  136.             CFG.SYS will accept any number of spaces between words.
  137.  
  138.             If no colors a given or if an invalid combination is used, the
  139.             current screen colors at the cursor location are used.  If
  140.             anything appears after the CommandName that cannot be parsed as
  141.             a color, an error message is displayed with a three second
  142.             WaitFor pause prior to continuing with the clear screen.
  143.  
  144.             This function is loosely based on two programs:  The CLS.SYS
  145.             driver written by William R. Peate [CompuServe: 76525,2366] and
  146.             uploaded to the CompuServe ZiffNet ZNT:TIPS Forum Library 16
  147.             (Gen Utils) on 10 April 1992 and the BATCHMAN.COM utility
  148.             written by Michael J. Mefford and published in the 30 January
  149.             1990 Utilities section of PC Magazine.  The command line color
  150.             scanning and ANSI.SYS code was written by the author.
  151.  
  152. ══════════════════
  153.  
  154. Color       Sets the screen color for future output using ANSI.SYS escape
  155.             sequences without clearing the screen.
  156.  
  157.             Command line format:
  158.  
  159.                   Color [Foreground [on] Background]
  160.  
  161.             The same notes on colors for the Cls command above apply to the
  162.             Color command except as noted below.
  163.  
  164.             ANSI.SYS must be installed.  If it is not installed, the
  165.             function is aborted with an error message.  If no colors are
  166.             given or if an invalid combination is used, an error message is
  167.             displayed.
  168.  
  169.             The Color command is designed to be used immediately after
  170.             ANSI.SYS has been loaded into memory to set its default colors
  171.             from white on black to what you desire.  It may also be used to
  172.             highlight the output of a specific program or group of programs
  173.             that do not use the BIOS for output.  Note that Color will not
  174.             repaint the screen.  It only sets the color of any future output
  175.             made via DOS.  Use the Cls command to reset the entire screen.
  176.  
  177.             This function is a modification of the Cls routine written by
  178.             the author.
  179.  
  180. ══════════════════
  181.  
  182. ComHide     Hides and restores the serial port base addresses.
  183.  
  184.             Command line format:
  185.  
  186.                   ComHide H|R
  187.  
  188.             The "H" option hides the serial port base addresses.  The "R"
  189.             option restores them.  One of the two must be used.  Error
  190.             messages are displayed if the routine fails (see the error
  191.             message section below).  Only the first character after the
  192.             CommandName has meaning; the rest are ignored.
  193.  
  194.             ComHide hides the serial port base addresses by copying them to
  195.             another location in memory when the "H" option is used.  On
  196.             restoration with the "R" option, ComHide verifies the signature
  197.             and checksum stored with the port addresses to ensure that they
  198.             were not accidently over-written while hidden.  ComHide then
  199.             copies the base addresses back to their normal location.
  200.  
  201.             The default location for the hidden data is 7001:0000.  This is
  202.             below the 512 Kb boundary in the event that the machine only has
  203.             that much base memory available, and high enough to keep it from
  204.             being over-written during execution of other device drivers
  205.             while the data is hidden.
  206.  
  207.             Example command lines:
  208.  
  209.                   CFG.SYS ComHide Hide
  210.                   COMANGLE.SYS
  211.                   CFG.SYS ComHide Restore
  212.  
  213.             This function was adapted from the LptHide function.
  214.  
  215. ══════════════════
  216.  
  217. ComSwap     Swaps the serial base port addresses for the two serial ports
  218.             specified.
  219.  
  220.             Command line format:
  221.  
  222.                   ComSwap a b
  223.  
  224.             where a and b are the numbers of the serial ports to be swapped. 
  225.             Valid numbers are 1, 2, 3 and 4.  An error message is given if
  226.             one of the ports is missing or invalid.
  227.  
  228.             ComSwap switches the two ports as far as DOS is concerned.  This
  229.             is useful if you need to shift the port addresses around prior
  230.             to loading software device drivers.  The contents of the port
  231.             addresses are not checked during the swap.
  232.  
  233.             Example command line:
  234.  
  235.                   CFG.SYS ComSwap 4 2
  236.  
  237.             This function was written by the author.
  238.  
  239. ══════════════════
  240.  
  241. Echo        Sends a comment line to the screen.
  242.  
  243.             Command line format:
  244.  
  245.                   Echo [String]
  246.  
  247.             Since DOS capitalizes everything on the CONFIG.SYS command line,
  248.             a carat (^) is used as the default character to toggle between
  249.             upper and lower case for the displayed string.  If a carat is
  250.             desired on the displayed line, two carats (^^) should be used on
  251.             the input line.  Used without text, Echo outputs a carriage
  252.             return/line feed sequence.
  253.  
  254.             A tilde (~) is the default character for insertion of a carriage
  255.             return/line feed sequence in the displayed line.  If a tilde is
  256.             desired on the displayed line, two tildes (~~) should be used on
  257.             the input line.
  258.  
  259.             The displayed string starts at the first non-separator character
  260.             following the CommandName.
  261.  
  262.             Example command line:
  263.  
  264.                   CFG.SYS Echo S^tart ^DEVICE ^section...~
  265.  
  266.             This command line would display "Start DEVICE section..." with
  267.             two trailing carriage return/line feeds.
  268.  
  269.             This function was adapted and expanded from the device driver
  270.             COMMENT.SYS written on 19 May 1985 and uploaded as COMENT.ARC to
  271.             CompuServe CIS:IBMSYS Library 1 (DOS/DOS Utils [S]) on 21
  272.             December 1990 by Skip Gilbrech [CompuServe: 71445,534].
  273.  
  274. ══════════════════
  275.  
  276. EchoPause   Suspends execution after printing a prompt message on the screen
  277.             that is specified on the command line.
  278.  
  279.             Command line format:
  280.  
  281.                   EchoPause [String]
  282.  
  283.             Pressing any key resumes execution.  Command line text should be
  284.             formatted as in the Echo command.  Use KeyPause for optional
  285.             pausing.
  286.  
  287.             This function was adapted by the author from the Echo and Pause
  288.             commands.
  289.  
  290. ══════════════════
  291.  
  292. EGA25       Sets a 25 line color EGA screen.
  293.  
  294.             Command line format:
  295.  
  296.                   EGA25
  297.  
  298.             Performs a mode 3 reset of the display adapter using Interrupt
  299.             10H Function 0.  This works on EGA in a display independent way.
  300.  
  301.             This function was written by the author.
  302.  
  303. ══════════════════
  304.  
  305. EGA43       Sets a 43 line EGA screen.
  306.  
  307.             Command line format:
  308.  
  309.                   EGA43
  310.  
  311.             Forces the use of the display adapter's internal 8x8 font. 
  312.             Interrupt 10H Function 11H Subfunction 12H performs an adapter
  313.             mode reset when it executes.  This works on EGA in a display
  314.             independent way.
  315.  
  316.             This function was written by the author.
  317.  
  318. ══════════════════
  319.  
  320. IACAfill    Writes up to 16 bytes to the Inter-Application Communication
  321.             Area for communication between CONFIG.SYS and AUTOEXEC.BAT.
  322.  
  323.             Command line format:
  324.  
  325.                   IACAfill Text
  326.  
  327.             There are 16 bytes at address 0040:00F0 called the Inter-
  328.             Application Communications Area (IACA).  These bytes can be
  329.             modified by any program, but few applications actually use them
  330.             since they are subject to change by any program and do not
  331.             provide much storage.
  332.  
  333.             The IACAfill command moves the Text string to the IACA.  The
  334.             text must be a single word.  A space or carriage return will end
  335.             the transfer to the IACA.  The companion program IACAREAD.COM
  336.             reads the string out of the IACA.  This can be one of the first
  337.             things done in AUTOEXEC.BAT, so there is little danger of the
  338.             IACA being overwritten before it is read.
  339.  
  340.             The advantage of IACAfill is that it allows communication
  341.             between CONFIG.SYS and AUTOEXEC.BAT.  When managing multiple
  342.             configurations, this will allow you to set a variable in each
  343.             separate CONFIG.SYS file for appropriate action in AUTOEXEC.BAT. 
  344.             See the IACAREAD.COM section below for documentation on the
  345.             companion program.
  346.  
  347.             Example command line:
  348.  
  349.                   CFG.SYS IACAfill 386Max
  350.  
  351.             This will store "386MAX" in the IACA.
  352.  
  353.             This function is based on the IACAFILL.SYS driver from the
  354.             IACATALK.ZIP file written on 4 February 1992 by Robert W.
  355.             Babcock [BIX: rbabcock] [Internet: peprbv@cfaamp.harvard.edu or
  356.             babcock@cfa.harvard.edu] [BITNET: babcock@cfa].  Sande Nissen
  357.             provided the IACATALK.ZIP file.
  358.  
  359. ══════════════════
  360.  
  361. KeyPause    Suspends execution if any of the Shift, Alt or Ctrl keys are
  362.             pressed.
  363.  
  364.             Command line format:
  365.  
  366.                   KeyPause
  367.  
  368.             One of the listed keys must be held down before program
  369.             execution.  Execution resumes once the key is released.  Use
  370.             Pause or EchoPause for prompted pausing.
  371.  
  372.             This function was adapted from a debug script in message #143888
  373.             in the CompuServe ZiffNet ZNT:TIPS Forum Section 4
  374.             (User-to-User) from Neil Rubenking [CompuServe: 72241,50] to
  375.             Oscar (no last name) [CompuServe: 75040,33] on 8 July 1992. 
  376.             Neil uploaded it as ALTPAUSE.SYS, even though it works for all
  377.             shift keys.  Neil has had the driver for a while and was not
  378.             sure when or where he originally got it.
  379.  
  380. ══════════════════
  381.  
  382. LptHide     Hides and restores the printer port base addresses.
  383.  
  384.             Command line format:
  385.  
  386.                   LptHide H|R
  387.  
  388.             The "H" option hides the printer port base addresses.  The "R"
  389.             option restores them.  One of the two must be used.  Error
  390.             messages are displayed if the routine fails (see the error
  391.             message section below).  Only the first character after the
  392.             CommandName has meaning; the rest are ignored.
  393.  
  394.             The specific program this was written for is the Iomega
  395.             Bernoulli Box RCD.SYS driver.  During RCD.SYS initialization, it
  396.             interrogates the printer ports to determine if there are any
  397.             parallel port Bernoulli Boxes installed.  Unfortunately, some
  398.             printers respond to this interrogation by printing the
  399.             interrogation sequence.
  400.  
  401.             LptHide hides the printer port base addresses by copying them to
  402.             another location in memory when the "H" command is used.  On
  403.             restoration with the "R" command, LptHide verifies the signature
  404.             and checksum stored with the port addresses to ensure that they
  405.             were not accidently over-written during RCD.SYS execution. 
  406.             LptHide then copies the base addresses back to their normal
  407.             location.
  408.  
  409.             The default location for the hidden data is 7000:0000.  This is
  410.             below the 512 Kb boundary in the event that the machine only has
  411.             that much base memory available, and high enough to keep it from
  412.             being over-written during execution of other device drivers
  413.             while the data is hidden.
  414.  
  415.             Example command lines:
  416.  
  417.                   CFG.SYS LptHide Hide
  418.                   RCD.SYS /M0
  419.                   CFG.SYS LptHide Restore
  420.  
  421.             This function was adapted and expanded from the device driver
  422.             LPTHIDE.SYS uploaded as LPTHID.SYS to CompuServe CIS:PCVENE
  423.             Library 3 (Iomega Corp.) on 13 March 1992 by Ronald Routh
  424.             [CompuServe: 75300,2511].
  425.  
  426. ══════════════════
  427.  
  428. LptSwap     Swaps the printer base port addresses for the two printer ports
  429.             specified.
  430.  
  431.             Command line format:
  432.  
  433.                   LptSwap a b
  434.  
  435.             where a and b are the numbers of the printer ports to be
  436.             swapped.  Valid numbers are 1, 2 and 3.  An error message will
  437.             be given if one of the ports is missing or invalid.
  438.  
  439.             LptSwap switches the two ports as far as DOS is concerned.  This
  440.             is useful if you need to shift the printer ports around and are
  441.             loading a software print buffer as a device driver.  The
  442.             contents of the port addresses are not checked during the swap.
  443.  
  444.             Example command line:
  445.  
  446.                   CFG.SYS LptSwap 1 3
  447.  
  448.             This function was written by the author.
  449.  
  450. ══════════════════
  451.  
  452. Mono        Sets a 25 line monochrome screen.
  453.  
  454.             Command line format:
  455.  
  456.                   Mono
  457.  
  458.             Performs a mode 7 reset of the display adapter using Interrupt
  459.             10H Function 0.  This works in a display independent way.  Use
  460.             this function only if a monochrome monitor is installed.
  461.  
  462.             This function was written by the author.
  463.  
  464. ══════════════════
  465.  
  466. Pause       Suspends execution after printing a prompt message on the
  467.             screen.
  468.  
  469.             Command line format:
  470.  
  471.                   Pause
  472.  
  473.             Pressing any key resumes execution.  The standard prompt is
  474.             "CFG.SYS 1.1 Pause - Press any key to continue . . .".  Use
  475.             EchoPause to display a customized pause message or KeyPause for
  476.             optional pausing.
  477.  
  478.             This function was adapted from a Debug script for PAUSE.SYS
  479.             written by Jeff Prosise and published in the 30 June 1992 Tutor
  480.             section of PC Magazine.
  481.  
  482. ══════════════════
  483.  
  484. Rem         Implements a CONFIG.SYS REM statement.
  485.  
  486.             Command line format:
  487.  
  488.                   Rem [Text]
  489.  
  490.             Indicates the use of descriptive comments in the CONFIG.SYS
  491.             file.  The command does nothing functional and immediately
  492.             exits.  This allows the entry of remarks in CONFIG.SYS for all
  493.             DOS versions without generating errors.
  494.  
  495.             REM is implemented in DOS Version 5.0, but is not available in
  496.             earlier versions.  For people who need to maintain standard
  497.             machine configurations, this can be an impediment to clear
  498.             documentation.  While it slows CONFIG.SYS execution slightly,
  499.             this is the best that can be done (easily) for DOS prior to
  500.             version 5.0.
  501.  
  502.             This function was written by the author based on a request by
  503.             Sande Nissen [Internet: snissen@carleton.edu] [CompuServe:
  504.             74716,3673].
  505.  
  506. ══════════════════
  507.  
  508. Tones       Programs the system's speaker port to emit a rising (Upward) or
  509.             falling (Downward) series of tones.
  510.  
  511.             Command line format:
  512.  
  513.                   Tones U|D
  514.  
  515.             A missing or incorrect command line argument will abort the
  516.             program with an error message.  Only the first character after
  517.             the CommandName has meaning.  The rest of the line is ignored.
  518.  
  519.             Example command line:
  520.  
  521.                   CFG.SYS Tones Up
  522.  
  523.             This function is based on the sound routines contained in the
  524.             ALLKEYS.COM program written by Robert L. Morton and published in
  525.             the 28 June 1988 Utilities section of PC Magazine.
  526.  
  527. ══════════════════
  528.  
  529. VGA25       Sets a 25 line color VGA screen.
  530.  
  531.             Command line format:
  532.  
  533.                   VGA25
  534.  
  535.             Performs a mode 3 reset of the display adapter using Interrupt
  536.             10H Function 0.  This works on VGA in a display independent way.
  537.  
  538.             This function was written by the author.
  539.  
  540. ══════════════════
  541.  
  542. VGA43       Sets a 43 line VGA screen.
  543.  
  544.             Command line format:
  545.  
  546.                   VGA43
  547.  
  548.             Forces the use of the display adapter's internal 8x14 font. 
  549.             Interrupt 10H Function 11H Subfunction 11H performs an adapter
  550.             mode reset when it executes.  This works on VGA in a display
  551.             independent way.
  552.  
  553.             This function was written by the author.
  554.  
  555. ══════════════════
  556.  
  557. VGA50       Sets a 50 line VGA screen.
  558.  
  559.             Command line format:
  560.  
  561.                   VGA50
  562.  
  563.             Forces the use of the display adapter's internal 8x8 font. 
  564.             Interrupt 10H Function 11H Subfunction 12H performs an adapter
  565.             mode reset when it executes.  This works on VGA in a display
  566.             independent way.
  567.  
  568.             This function was written by the author.
  569.  
  570. ══════════════════
  571.  
  572. WaitFor     Delays program execution for the number of minutes and seconds
  573.             given on the command line.
  574.  
  575.             Command line format:
  576.  
  577.                   WaitFor [m:]s
  578.  
  579.             Where m is the delay time in minutes and s is in seconds.  If a
  580.             single number is on the command line, it is assumed to be
  581.             seconds.  The default is one second.
  582.  
  583.             CFG.SYS only checks for a ':' between the minutes and seconds. 
  584.             Any other character or separator will cause the minutes value to
  585.             be treated as seconds and the seconds value to be ignored.
  586.  
  587.             Pressing any key during the wait period will cancel the wait. 
  588.             WaitFor checks the keyboard buffer at one second intervals for a
  589.             key press.
  590.  
  591.             This function was adapted from the BATCHMAN.COM utility written
  592.             by Michael J. Mefford and published in the 30 January 1990
  593.             Utilities section of PC Magazine.
  594.  
  595.  
  596. ───────────────────────────────────────────────────────────────────────────
  597.                           DISCLAIMER - RESTRICTIONS
  598. ───────────────────────────────────────────────────────────────────────────
  599.  
  600.  
  601. CFG.SYS is freeware, or what is known as "zero-cost shareware".  CFG.SYS is
  602. not what is generally called "public domain" software because the author
  603. retains the copyright.  However, the CFG.SYS package can be copied, used and
  604. distributed freely as long as all files in CFG.ZIP are not altered and are
  605. distributed together.
  606.  
  607. CFG.SYS can be included in shareware packages as long as CFG.SYS and all its
  608. related files are included in the shareware package.  If you have received
  609. CFG.SYS as part of some larger shareware package, please be aware that you
  610. may freely use, copy and distribute CFG.SYS without paying a fee for, or
  611. registering, the larger package.
  612.  
  613. The original IACAFILL.SYS driver is copyright 1991 by R. W. Babcock and WSS
  614. Division of DDC.
  615.  
  616. CFG.SYS is supplied as is.  The author disclaims all warranties, expressed
  617. or implied, including, without limitation, the warranties of merchantability
  618. and of fitness for any purpose.  The author assumes no liability for
  619. damages, direct or consequential, which may result from the use of CFG.SYS.
  620.  
  621. CFG.SYS should work for all DOS versions from 2.0 upward.  It has been
  622. specifically tested on DOS 5.0.  I would appreciate confirmation of
  623. satisfactory operation on older versions.
  624.  
  625. If you find CFG.SYS useful, I would like to know.  I would appreciate a
  626. short note via US Mail or CompuServe Mail telling me what you like or
  627. dislike about CFG.SYS.  If you need other functions or output, please
  628. contact me.
  629.  
  630. I will upload the most recent version of CFG.SYS to various forums on
  631. CompuServe and ZiffNet under the file name "CFG.ZIP".  If the file does not
  632. appear with my PPN, it may not be the most recent upload.
  633.  
  634.  
  635. ───────────────────────────────────────────────────────────────────────────
  636.                               ACKNOWLEDGEMENTS
  637. ───────────────────────────────────────────────────────────────────────────
  638.  
  639.  
  640. My thanks and recognition goes to the authors noted above for their original
  641. versions of the utilities presented here.  A special tip of the hat goes to
  642. Rod Pullman [CompuServe: 76226,3120] for his very useful DEVICE.COM utility. 
  643. DEVICE loads DOS character device drivers subsequent to system boot.  It
  644. also works great to test nonresident character device drivers like CFG.SYS. 
  645. Without it, testing and debugging CFG.SYS would have been too hard to
  646. contemplate.
  647.  
  648.  
  649. ───────────────────────────────────────────────────────────────────────────
  650.                                ERROR MESSAGES
  651. ───────────────────────────────────────────────────────────────────────────
  652.  
  653. CFG.SYS 1.1       ERROR - Invalid command.
  654.                         ───
  655.                         Issued if specified CommandName is incorrect or
  656.                         missing.
  657.  
  658. CFG.SYS 1.1 Cls   ERROR - Wrong color format or spelling.
  659.                         ───
  660.                         Issued if anything appears after the CommandName
  661.                         that cannot be parsed as screen colors.
  662.  
  663. CFG.SYS 1.1 Color ERROR - ANSI.SYS not installed.
  664.                         ───
  665.                         Issued if CFG.SYS determines that the ANSI.SYS
  666.                         driver has not been loaded into memory.
  667.  
  668. CFG.SYS 1.1 Color ERROR - Wrong color format or spelling.
  669.                         ───
  670.                         Issued if anything appears after the CommandName
  671.                         that cannot be parsed as screen colors.
  672.  
  673. CFG.SYS 1.1 ComHide     ERROR - No valid option.  'H' or 'R' is required.
  674.                         ───
  675.                         Issued if CommandName Option does not begin with the
  676.                         correct letter.  CFG.SYS only checks the first
  677.                         character after the CommandName, the rest of the
  678.                         line is ignored.
  679.  
  680. CFG.SYS 1.1 ComHide     ERROR - Hidden ports already present.
  681.                         ───
  682.                         Issued if Hide is run twice in succession without a
  683.                         Restore in between.  A second Hide action would
  684.                         permanently erase the base port addresses.
  685.  
  686. CFG.SYS 1.1 ComHide     ERROR - Could not locate hidden ports.
  687.                         ───
  688.                         Issued if the signature is missing from the upper
  689.                         memory hidden storage location.  This could be due
  690.                         to the area having been over-written or due to a
  691.                         Restore being run without a preliminary Hide
  692.                         operation.
  693.  
  694. CFG.SYS 1.1 ComHide     ERROR - Checksum invalid, ports not restored.
  695.                         ───
  696.                         The checksum stored with the hidden ports shows that
  697.                         the data has been changed since it was written,
  698.                         probably due to being over-written.
  699.  
  700. CFG.SYS 1.1 ComSwap     ERROR - Missing or invalid port.
  701.                         ───
  702.                         Issued if only one port is given on the command line
  703.                         or if the port requested is other than 1, 2, 3 or 4.
  704.  
  705. CFG.SYS 1.1 ComSwap     ERROR - Cannot swap the same port.
  706.                         ───
  707.                         Issued if the ports requested are the same.
  708.  
  709. CFG.SYS 1.1 IACAfill    ERROR - IACA already in use.
  710.                         ───
  711.                         Issued if the first character of the IACA is not an
  712.                         ASCII 0, indicating other information has already
  713.                         been placed in the IACA.
  714.  
  715. CFG.SYS 1.1 LptHide     ERROR - No valid option.  'H' or 'R' is required.
  716.                         ───
  717.                         See ComHide description.
  718.  
  719. CFG.SYS 1.1 LptHide     ERROR - Hidden ports already present.
  720.                         ───
  721.                         See ComHide description.
  722.  
  723. CFG.SYS 1.1 LptHide     ERROR - Could not locate hidden ports.
  724.                         ───
  725.                         See ComHide description.
  726.  
  727. CFG.SYS 1.1 LptHide     ERROR - Checksum invalid, ports not restored.
  728.                         ───
  729.                         See ComHide description.
  730.  
  731. CFG.SYS 1.1 LptSwap     ERROR - Missing or invalid port.
  732.                         ───
  733.                         See ComSwap description.
  734.  
  735. CFG.SYS 1.1 LptSwap     ERROR - Cannot swap the same port.
  736.                         ───
  737.                         See ComSwap description.
  738.  
  739. CFG.SYS 1.1 Tones ERROR - Missing or incorrect command option.
  740.                         ───
  741.                         Issued if CommandName Option is missing or does not
  742.                         begin with the correct letter.  CFG.SYS only checks
  743.                         the first character after the CommandName, the rest
  744.                         of the line is ignored.
  745.  
  746. CFG.SYS 1.1 WaitFor     ERROR - Missing or incorrect delay value.
  747.                         ───
  748.                         Issued if CommandName Option is missing or does not
  749.                         begin with a number.
  750.  
  751.  
  752. ────────────────────────────────────────────────────────────────────────────
  753.                               REVISION HISTORY
  754. ────────────────────────────────────────────────────────────────────────────
  755.  
  756.  
  757. Version 1.0  ---  28 August 1992
  758.       *     First version.  Supports Beep, Cls, ComHide, ComSwap, Echo,
  759.             EchoPause, EGA43, KeyPause, LptHide, LptSwap, Pause, Tones,
  760.             VGA43, VGA50 and WaitFor commands.
  761.  
  762. Version 1.1 --- 11 September 1992
  763.       *     Revised command line parsing.  Now recognizes the plus sign,
  764.             equals sign and comma as separators.
  765.       *     Revised the method for detecting ANSI.SYS.  Previously, the ANSI
  766.             Device Status Report sequence was used.  This proved unreliable
  767.             on some systems when StdIn did not reflect a valid Cursor
  768.             Position Report from ANSI.SYS.  The new method uses cursor
  769.             positioning sequences instead.
  770.       *     Changed several things in Cls command:  Fixed a bug that caused
  771.             bright colors to sometimes be displayed in low intensity,
  772.             removed a mismatch between the DOS and ANSI.SYS color codes, and
  773.             added color parsing error messages.
  774.       *     Corrected error which made the Tones command unavailable.
  775.       *     Added the Color, IACAfill and Rem commands as well as the
  776.             IACAread companion program.
  777.       *     Revised and updated the documentation.
  778.  
  779.  
  780. ────────────────────────────────────────────────────────────────────────────
  781.                                  DISCUSSION
  782. ────────────────────────────────────────────────────────────────────────────
  783.  
  784.  
  785.    Many utilities exist for use from the command line.  When I added
  786. Qualitas' BlueMax 6.0 to my system (see below), what was once a relatively
  787. short boot display became quite a protracted affair.  I wanted to neaten and
  788. add color to the device driver installation phase as well as add messages
  789. and optional pauses.  I foresaw my disk becoming overrun by numerous small
  790. device drivers (more so than it already was), so I wrote the basic CFG.SYS
  791. shell handler and then started looking around for useful utilities.
  792.  
  793.    CFG.SYS is executed during the device driver installation phase of system
  794. boot.  It does not remain resident in memory and may be run multiple times
  795. in CONFIG.SYS.
  796.  
  797.    CFG.SYS sets up its own 512 byte stack to avoid overflowing the DOS stack
  798. during operation.  The program then moves the command line from the system
  799. buffer to a local buffer for parsing.  The CommandName is scanned and the
  800. appropriate function is executed.  The function is responsible for any
  801. additional command line parsing.
  802.  
  803.    Upon completion of the function, the command handler regains control and
  804. performs the final clean-up processing required by DOS for termination of
  805. the driver.  The DOS stack in use at program entry is restored and CFG.SYS
  806. ends with a Far Return to DOS.
  807.  
  808.    General parsing allows any of the standard DOS separator characters to be
  809. ignored.  With the exception of the bright Cls colors noted above, the
  810. number of spaces between command line words does not matter.
  811.  
  812.    Not many DOS functions are available during device driver installation,
  813. since the program fragments that will be the whole operating system are
  814. still being assembled when the drivers' initialization routines are run. 
  815. DOS (Interrupt 21H) functions that are available are:  01-0CH (various
  816. character and string input and output routines), 25H (Set Interrupt Vector),
  817. 30H (Get MS-DOS Version Number), and 35H (Get Interrupt Vector).  All BIOS
  818. video and keyboard routines are available.  Within these limits, some very
  819. useful things can be done.
  820.  
  821.  
  822. ────────────────────────────────────────────────────────────────────────────
  823.                                 IACAREAD.COM
  824. ────────────────────────────────────────────────────────────────────────────
  825.  
  826.  
  827. IACAread is the program which reads the saved string from the IACA.  Include
  828. the following in AUTOEXEC.BAT:
  829.  
  830.    IACAread @SET EnvName=>IACATEMP.BAT
  831.    CALL IACATEMP.BAT
  832.    DEL IACATEMP.BAT
  833.  
  834. where EnvName is the name of the environment variable to be set.  IACAread
  835. will display an error message if there is no string in the IACA and set an
  836. exit ERRORLEVEL of 1.  An ERRORLEVEL of 0 indicates proper function.
  837.  
  838. If the SET command in the IACATEMP.BAT file does not work, you should have
  839. received an "Out of environment space" error from DOS during execution. 
  840. Environment space may be increased by placing a larger number after the /E:
  841. switch on the CONFIG.SYS SHELL line or adding such a line with a /E: switch
  842. to the file if none exists.  See the sample CONFIG.SYS file below.
  843.  
  844. IACAread functions by checking the IACA for a string.  It then scans its
  845. command line and writes anything it finds there to StdOut.  It then writes
  846. the IACA to StdOut and terminates.  Writing to StdOut allows you to use DOS
  847. command line redirection to place the temporary batch file where you want. 
  848. A RAM disk is ideal.  You can easily write your own program to handle
  849. IACAread's output since no error is generated for lack of command line input
  850. to IACAread.  IACAread will simply write the IACA to StdOut.  The IACA is
  851. not cleared by IACAread.
  852.  
  853. The original IACAread program included with the IACATALK.ZIP file was
  854. written in C (I dislike C) and manipulated the DOS master environment
  855. directly.  While I have done quite a bit of programming using undocumented
  856. DOS, I wanted to stay with documented methods for CFG.SYS.  If you have the
  857. original version of IACAread, it will operate the same as before with the
  858. CFG.SYS IACAfill command replacing the IACAFILL.SYS device driver.
  859.  
  860.  
  861. ────────────────────────────────────────────────────────────────────────────
  862.                               SAMPLE CONFIG.SYS
  863. ────────────────────────────────────────────────────────────────────────────
  864.  
  865.  
  866. The following is a recent copy of my CONFIG.SYS file showing usage of
  867. several of the commands.  Line wrap is indicated by indentation.
  868.  
  869.  
  870. Break=On
  871. Buffers=10
  872. Dos=High
  873. FCBS=1
  874. Files=8
  875. LastDrive=G
  876. Stacks=0,0
  877. Switches=/W
  878. Shell=C:\Dos\Command.Com C:\Dos\ /E:512 /P /F
  879. Device=C:\Dos\Start\Cfg.Sys VGA50
  880. Device=C:\Dos\Start\Cfg.Sys Cls Bright White on Blue
  881. Device=C:\BlueMax\BlueMax.Sys Pro=C:\BlueMax\BlueMax.Pro Dos5
  882. Device=C:\Dos\Start\Cfg.Sys KeyPause
  883. Device=C:\BlueMax\386Load.Sys Terse Size=1184 PrgReg=4 FlexFrame
  884.                                               Prog=C:\Dos\Start\DASDDrvr.Sys
  885. Device=C:\Norton\Ncache.Exe /Install /Ini=C:\Norton
  886. Device=C:\Dos\Start\Cfg.Sys KeyPause
  887. Device=C:\BlueMax\386Load.Sys Terse Size=37056 PrgReg=3 FlexFrame
  888.                                        Prog=C:\Dos\Start\Mouse.Sys Ser 2 S06
  889. Device=C:\Dos\Start\Cfg.Sys KeyPause
  890. Device=C:\BlueMax\386Load.Sys Terse Size=5280 FlexFrame
  891.                                      Prog=C:\Dos\Start\Bridge_B.Drv /PS60:1B
  892. Device=C:\Dos\Start\Cfg.Sys LptHide Hide
  893. Device=C:\Dos\Start\Cfg.Sys KeyPause
  894. Device=C:\BlueMax\386Load.Sys Terse Size=30880 PrgReg=3 FlexFrame
  895.                                                Prog=C:\Dos\Start\RCD.Sys /M0
  896. Device=C:\Dos\Start\Cfg.Sys LptHide Restore
  897. Device=C:\Dos\Start\Cfg.Sys KeyPause
  898. Device=C:\Dos\Start\Cfg.Sys Cls Bright White on Blue
  899. Device=C:\BlueMax\386Load.Sys Terse Size=6768 PrgReg=2 FlexFrame
  900.                                 Prog=C:\BlueMax\386Disk.Sys 1024 512 64 /XMS
  901. Device=C:\Dos\Start\Cfg.Sys KeyPause
  902. Device=C:\BlueMax\386Load.Sys Terse Size=9040 PrgReg=2 FlexFrame
  903.                                                   Prog=C:\Dos\Start\ANSI.Sys
  904. Device=C:\Dos\Start\Cfg.Sys Color Bright White on Blue
  905. Device=C:\Dos\Start\Cfg.Sys KeyPause
  906. Device=C:\Stacker\Screate.Sys F:
  907. Device=C:\Dos\Start\Cfg.Sys KeyPause
  908. Device=C:\BlueMax\386Load.Sys Terse Size=40907 PrgReg=3 FlexFrame
  909.                     Prog=C:\Stacker\Stacker.Com D:\StacVol.Dsk @ F: /EMS /NB
  910. Device=C:\Dos\Start\Cfg.Sys KeyPause
  911. Device=C:\Stacker\Sswap.Com D:\StacVol.Dsk
  912. Device=C:\Dos\Start\Cfg.Sys KeyPause
  913. Device=C:\BlueMax\386Load.Sys Terse Size=62573 PrgReg=3 FlexFrame
  914.                                                      Prog=C:\NAV\NAV_.Sys /W
  915. Device=C:\Dos\Start\Cfg.Sys KeyPause
  916. Device=C:\Dos\Start\Cfg.Sys VGA25
  917. Device=C:\Dos\Start\Cfg.Sys Cls Bright White on Blue
  918.  
  919.  
  920.          ----------------end-of-author's-documentation---------------
  921.  
  922.                          Software Library Information:
  923.  
  924.                     This disk copy provided as a service of
  925.  
  926.                            Public (software) Library
  927.  
  928.          We are not the authors of this program, nor are we associated
  929.          with the author in any way other than as a distributor of the
  930.          program in accordance with the author's terms of distribution.
  931.  
  932.          Please direct shareware payments and specific questions about
  933.          this program to the author of the program, whose name appears
  934.          elsewhere in  this documentation. If you have trouble getting
  935.          in touch with the author,  we will do whatever we can to help
  936.          you with your questions. All programs have been tested and do
  937.          run.  To report problems,  please use the form that is in the
  938.          file PROBLEM.DOC on many of our disks or in other written for-
  939.          mat with screen printouts, if possible.  PsL cannot debug pro-
  940.          programs over the telephone, though we can answer questions.
  941.  
  942.          Disks in the PsL are updated  monthly,  so if you did not get
  943.          this disk directly from the PsL, you should be aware that the
  944.          files in this set may no longer be the current versions. Also,
  945.          if you got this disk from another vendor and are having prob-
  946.          lems,  be aware that  some files may have become corrupted or
  947.          lost by that vendor. Get a current, working disk from PsL.
  948.  
  949.          For a copy of the latest monthly software library newsletter
  950.          and a list of the 4,000+ disks in the library, call or write
  951.  
  952.                            Public (software) Library
  953.                                P.O.Box 35705 - F
  954.                             Houston, TX 77235-5705
  955.  
  956.                                 1-800-2424-PSL
  957.                              MC/Visa/AmEx/Discover
  958.  
  959.                           Outside of U.S. or in Texas
  960.                           or for general information,
  961.                               Call 1-713-524-6394
  962.  
  963.  
  964.